package com.efast.cafe.portal.service.api;

import java.util.List;

import com.efast.cafe.portal.bean.api.PackagePublishIndentifierBean;
import com.efast.cafe.portal.bean.api.PackagePublishServiceBean;
import com.efast.cafe.portal.bean.api.PortalApiServiceBean;
import com.efast.cafe.portal.bean.api.PortalApiServiceQueryBean;
import com.efast.cafe.portal.bean.api.PortalApiServiceUpgradeBean;
import com.efast.cafe.portal.entity.api.PortalApiInputParam;
import com.efast.cafe.portal.entity.api.PortalApiOutputParam;

/**
 * <p>
 * Service接口
 * </p>
 * <p>
 * Table: portal_api_service - 服务定义
 * </p>
 *
 * @since 2017-08-10 02:38:48
 */
public interface IPortalApiServiceService {

	/**
	 * 新增一个服务接口
	 * 
	 * @param portalApiServiceBean
	 * @Author Administrator
	 * @Date 2017年8月11日
	 *
	 */
	public void insertApiService(PortalApiServiceBean portalApiServiceBean);

	/**
	 * 修改服务服务接口
	 * 
	 * @param portalApiServiceBean
	 * @Author Administrator
	 * @Date 2017年8月11日
	 *
	 */
	public void updateApiService(PortalApiServiceBean portalApiServiceBean);

	/**
	 * 删除服务
	 * 
	 * @param id
	 *            服务id
	 * @Author Administrator
	 * @Date 2017年8月11日
	 *
	 */
	public void deleteApiService(Integer id);

	/**
	 * 查看服务详情
	 * 
	 * @param id
	 * @Author Administrator
	 * @Date 2017年8月12日
	 * @return PortalApiServiceBean
	 */
	public PortalApiServiceBean QueryPortalApiServiceDetailById(Integer id);

	/**
	 * 批量发布服务
	 * 
	 * @param packagePublishServiceBean
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月14日
	 */
	public void publishPortalApiServiceList(PackagePublishServiceBean packagePublishServiceBean,
			PackagePublishIndentifierBean packagePublishIndentifierBean);

	/**
	 * 升级服务
	 * 
	 * @param portalApiServiceUpgradeBean
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月15日
	 */
	public void upgradePortalApiService(PortalApiServiceUpgradeBean portalApiServiceUpgradeBean);

	/**
	 * 查询服务列表
	 * 
	 * @param queryBean
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月19日
	 */
	public PortalApiServiceQueryBean queryPortalApiServiceList(PortalApiServiceQueryBean queryBean);

	/**
	 * 查询系统的所有版本
	 * 
	 * @param queryBean
	 * @return PortalApiServiceQueryBean
	 * @Author Administrator
	 * @Date 2017年8月22日
	 */
	public PortalApiServiceQueryBean queryPortalApiServiceVersions(PortalApiServiceQueryBean queryBean);

	/**
	 * 判断服务版本是否存在
	 * 
	 * @param portalApiServiceBean
	 * @return boolean
	 * @Author Administrator
	 * @Date 2017年8月22日
	 */
	public boolean apiServiceVersionIsExist(PortalApiServiceBean portalApiServiceBean);

	/**
	 * 从请求定义中提取请求参数列表
	 * @param resDefine
	 * @return List<PortalApiInputParam>
	 * @Author Administrator
	 * @Date 2017年8月31日
	 */
	public List<PortalApiInputParam> parseInputparams(String reqDefine);

	/**
	 * 从响应定义中提取响应参数列表
	 * @param resDefine
	 * @return List<PortalApiOutputParam>
	 * @Author Administrator
	 * @Date 2017年8月31日
	 */
	public List<PortalApiOutputParam> parseOutputparams(String resDefine);
	
	/**
	 * 通过uri查询服务全部信息
	 * @param serviceUri
	 * @return
	 */
	public List<PortalApiServiceBean> queryServiceByUri(String serviceUri,String indentifier);

}